Git 在我大二的時候,就被迫程式作業要交到 GitHub 上,那時候連 Git 是什麼都不知道,因此就是一個指令一個動作,也沒有想過要知道 Git 是什麼。
這次為了寫前端,又稍微重新學了一下 Git 的目的跟用法。
Git:版本控制系統
相信大家都有這種經驗,分組的時候,無論是 PPT 或是 WORD,報告前會丟到群組,檔名可能叫期末報告,如果組員有修改過再丟上來就會避免把原本的檔案覆蓋掉,因此檔名會改成期末報告v2,第二個組員再改了一下丟上來,檔名會改成期末報告v3......依此類推。然後你就會發現你的期末報告資料夾裡在報告前可能會有 10 個版本。
這是基礎版的版本控制概念。
v10 看起來就是最終確認版本,對吧?
但是問題來了。萬一 v3 的文件,不是那 v2 來改的,而是拿 v1 來改的,那問題就大條了。誰會發現 v2 修改過的地方沒有被改到呢?這種問題又容易發生在多個人同時編輯一種文件時的狀況。
所以 Git 就是為了解決這個問題。
假設今天有一份文件長這樣:
ABCEEFGHIJKLMNOPQRRSTUVWXYZ
在進行第一次編輯的時候改成這樣
ABCDEFGHIJKLMNOPQRRSTUVWXYZ
(ABCD
EEFGHIJKLMNOPQRRSTUVWXYZ)
那麼 Git 在紀錄的時候並不會重新把所有字母都記錄一次,而是只記有修改過的部分:第四個字加D
,第五個字刪除E
第二次編輯的時候長這樣:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
(ABCDEFGHIJKLMNOPQRRSTUVWXYZ)
Git 的紀錄也會只記得第 19 個字母 R 刪除。
用檔案碎片化的方式去記錄每次的編輯跟修改,因為只記碎片的內容,所以檔案不會像原始的 26 個字母這的大,而是只有修改的那一兩個字母的大小。因為檔案很小,所以在重新開啟編輯的時候也不會重新載入一堆資訊,相當方便。
因為工程師的程式碼屬於文字,因此在修改起來也很容易看出第幾行編輯過,非常適合用 Git;但若是設計師常用的圖片檔呢? Git 也能記錄,但在編輯紀錄上就不輕易看出哪裡有修改過,但至少還是能確保你的檔案目前是最新版的,就不需要一直複製舊檔案去改囉。